package br.com.locasis.funcionalidades;

import java.util.ArrayList;
import java.util.List;

import javax.faces.model.SelectItem;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;

import br.com.locasis.entity.FormaPagamento;
import br.com.locasis.entity.Pais;
import br.com.locasis.entity.TipoValorPagamento;

@Name("dominioController")
@Scope(ScopeType.SESSION)
//@Restrict(value="#{identity.hasRole('"+PerfilUsuario.PERFIL_PETSHOP+"')}")
public class DominioController {
	
	@In(create=true)
	private EntityManager entityManager;
	
	private List<SelectItem> listaUfs;
	
	private List<SelectItem> listaPaises;
	
	private List<FormaPagamento> listaFormasPagamento;

	public List<SelectItem> getListaUfs() {
		if (listaUfs == null) {
			listaUfs = new ArrayList<SelectItem>();
			listaUfs.add(new SelectItem(null,"Selecione"));
			listaUfs.add(new SelectItem("AC","AC"));
			listaUfs.add(new SelectItem("AL","AL"));
			listaUfs.add(new SelectItem("AP","AP"));
			listaUfs.add(new SelectItem("AM","AM"));
			listaUfs.add(new SelectItem("BA","BA"));
			listaUfs.add(new SelectItem("CE","CE"));
			listaUfs.add(new SelectItem("DF","DF"));
			listaUfs.add(new SelectItem("ES","ES"));
			listaUfs.add(new SelectItem("GO","GO"));
			listaUfs.add(new SelectItem("MA","MA"));
			listaUfs.add(new SelectItem("MT","MT"));
			listaUfs.add(new SelectItem("MS","MS"));
			listaUfs.add(new SelectItem("MG","MG"));
			listaUfs.add(new SelectItem("PA","PA"));
			listaUfs.add(new SelectItem("PB","PB"));
			listaUfs.add(new SelectItem("PR","PR"));
			listaUfs.add(new SelectItem("PE","PE"));
			listaUfs.add(new SelectItem("PI","PI"));
			listaUfs.add(new SelectItem("RJ","RJ"));
			listaUfs.add(new SelectItem("RN","RN"));
			listaUfs.add(new SelectItem("RS","RS"));
			listaUfs.add(new SelectItem("RO","RO"));
			listaUfs.add(new SelectItem("RR","RR"));
			listaUfs.add(new SelectItem("SC","SC"));
			listaUfs.add(new SelectItem("SP","SP"));
			listaUfs.add(new SelectItem("SE","SE"));
			listaUfs.add(new SelectItem("TO","TO"));
		}
		return listaUfs;
	}

	public void setListaUfs(List<SelectItem> listaUfs) {
		this.listaUfs = listaUfs;
	}
	
	public List<SelectItem> getListaPaises() {
		if (listaPaises == null) {
			listaPaises = new ArrayList<SelectItem>();
			listaPaises.add(new SelectItem(null,"Selecione"));
			List<Pais> lista = entityManager.createQuery("select p from Pais p where p.flgAtivo is true").getResultList();
			for(Pais p : lista){
				listaPaises.add(new SelectItem(p.getIdPais(),p.getNome()));
			}
		}
		return listaPaises;
	}

	public void setListaPaises(List<SelectItem> listaPaises) {
		this.listaPaises = listaPaises;
	}
	
	public TipoValorPagamento recuperaTipoValorPagamentoPorNome(String nome){
		try{
			return (TipoValorPagamento)entityManager.createQuery("select t from TipoValorPagamento t where t.nome = :nome and t.flgAtivo is true")
				.setParameter("nome", nome)
				.getSingleResult();
		}catch(NoResultException e){
			return null;
		}
	}

	public List<FormaPagamento> getListaFormasPagamento() {
		if (listaFormasPagamento == null) {
			listaFormasPagamento = entityManager.createQuery("select f from FormaPagamento f where f.flgAtivo is true").getResultList();
		}
		return listaFormasPagamento;
	}

	public void setListaFormasPagamento(List<FormaPagamento> listaFormasPagamento) {
		this.listaFormasPagamento = listaFormasPagamento;
	}
	
}
